/**
 * @filename:StudentClassService StudentClass
 * @project constract  V1.0
 * Copyright(c) 2018 lin keqing Co. Ltd. 
 * All right reserved. 
 */
package com.znufe.exam.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.znufe.exam.domain.StudentClass;
import com.znufe.exam.domain.User;
import com.znufe.exam.domain.classes.StudentClassResponseObject;
import com.znufe.exam.viewmodel.admin.classes.StudentClassCreateVM;
import com.znufe.exam.viewmodel.admin.classes.StudentClassPageRequestVM;

/**
 *  
 * @Description:  班级信息表——SERVICE
 * @Author:       lin keqing   
 * @CreateDate:   StudentClass
 * @Version:      V1.0
 *    
 */
public interface StudentClassService extends BaseService<StudentClass> {
	
	/**
	 * @explain 查询班级信息表对象
	 * @param   id
	 * @return  StudentClass
	 * @author  lin keqing
	 */
	StudentClass selectByPrimaryKey(Integer id);

	/**
	 * selectByClassName
	 *
	 * @explain: 通过班级名称搜索班级信息
	 * @return: StudentClass
	 * @param: [className]
	 * @Author: lin keqing
	 */
	StudentClass selectByClassName(String className);

	/**
	 * saveStudentClassFromVM
	 *
	 * @explain: 通过前端的请求体与用户保存班级信息
	 * @return: com.znufe.exam.domain.StudentClass
	 * @param: [studentClassCreateVM, user]
	 * @Author: lin keqing
	 */
	StudentClass saveStudentClassFromVM(StudentClassCreateVM studentClassCreateVM, User user);

	/**
	 * studentClassPage
	 *
	 * @explain: 按班级名称搜索、以及搜索所有的班级信息
	 * @return: PageInfo<StudentClassResponseObject>
	 * @param: [requestVM]
	 * @Author: lin keqing
	 */
	PageInfo<StudentClassResponseObject> studentClassPage(StudentClassPageRequestVM requestVM);

	/**
	 * @explain 删除班级信息表对象
	 * @param   id
	 * @return  int
	 * @author  lin keqing
	 */
	int deleteByPrimaryKey(Integer id);
	
	/**
	 * @explain 添加班级信息表对象
	 * @param   studentClass
	 * @return  int
	 * @author  lin keqing
	 */
	int insertSelective(StudentClass studentClass);
	
	/**
	 * @explain 修改班级信息表对象
	 * @param   studentClass
	 * @return  int
	 * @author  lin keqing
	 */
	int updateByPrimaryKeySelective(StudentClass studentClass);
	
	/**
	 * @explain 查询班级信息表集合
	 * @param   studentClass
	 * @return  List<StudentClass>
	 * @author  lin keqing
	 */
	List<StudentClass> queryStudentClassList(StudentClass studentClass);

	/**
	 * selectClassStuCountById
	 *
	 * @explain 通过班级id查询班级人数
	 * @return: java.lang.Integer
	 * @param: [classId]
	 * @Author: lin keqing
	 */
	Integer selectClassStuCountById(Integer classId);
}